package com.css.upms.biz.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.css.common.core.utils.R;
import com.css.upms.api.dto.MenuTree;
import com.css.upms.api.entity.SysMenu;
import com.css.upms.api.vo.MenuVo;

import java.util.List;

/**
 * 菜单权限表
 *
 * @author hanyx
 * @date 2019-05-03 01:49:04
 */
public interface SysMenuService extends IService<SysMenu> {

    /**
     * 菜单权限表简单分页查询
     *
     * @param sysMenu 菜单权限表
     * @return
     */
    IPage<SysMenu> getSysMenuPage(Page<SysMenu> page, SysMenu sysMenu);


    /**
     * 通过角色编号查询URL 权限
     *
     * @param roleId 角色ID
     * @return 菜单列表
     */
    List<MenuVo> getMenuByRoleId(String roleId);

    /**
     * 级联删除菜单
     *
     * @param id 菜单ID
     * @return 成功、失败
     */
    R removeMenuById(String id);

    /**
     * 级联删除菜单
     *
     * @param ids 菜单ID
     * @return 成功、失败
     */
    R removeMenuByIds(String ids);

    /**
     * 更新菜单信息
     *
     * @param sysMenu 菜单信息
     * @return 成功、失败
     */
    R updateMenuById(SysMenu sysMenu);


    /**
     * 新建菜单
     *
     * @param sysMenu
     * @return
     */
    R saveMenu(SysMenu sysMenu);

    /**
     * 获取当前用户菜单权限信息
     *
     * @return
     */
    List<MenuTree> getUserMenuTree();

    List<MenuTree> getCurrentUserMenuTree();

    /**
     * 获取当前用户菜单权限信息
     *
     * @return
     */
    List<MenuTree> getUserMenuList();

    /**
     * 获取指定角色菜单权限信息
     *
     * @return
     */
    List<MenuTree> getMenuListByRoleId(List<String> roleIds);


    /**
     * 获取指定角色菜单权限信息 - 树结构
     *
     * @return
     */
    R getMenuTreeByRole(String roleIds);
}
